// 全局变量
const App = getApp()

// 网络请求
import Request_post from "../../../../request/Request_post"
import Request_get from "../../../../request/Request_get"

//引入时间函数
var dateArray = require("../../../../utils/CustomFunction/getDayFirstNowLast.js")
var time = require("../../../../utils/CustomFunction/getNowTime.js")

//引入日期时间：（格式化、反格式化）函数
var formatDate = require("../../../../utils/CustomFunction/dateFormat.js")
var unformatDate = require("../../../../utils/CustomFunction/dateUnFormat.js")

//系统设置项目:(请求地址-在封装中已经引入，这里不需要;   api调用的Appid-partner_app_id;   渠道ID-as_appid)
import config from '../../../../config/config'; 

Page({

	/**
	 * 页面的初始数据
	 */
	data: {

		/** 支付所需的变量 begin */
		//支付时按钮的状态控制
		payBt_Statu:false,
		//支付按钮不同状态时显示的文字
		payBt_text:"确认支付",
		//支付方式选择 单选框默认值
		payMentype:
		[{typeID:"01",name:"微信支付",image:"../../../../image/wechatPay.png",checked:true},
			// {typeID:"02",name:"银联支付",image:"../../../../image/bankPay.png",checked:false},
		],
		//支付方式如果只有一项时，需要设置一个 this.data.typeID 的默认值
		typeID:"01",
		//轮询次数初始值
		num:0,
		/** 支付所需的变量 end */

		
		//Title图片的网络地址链接
		Title_Image:config.imageUrl+"title_member_RechargeOnline.jpg",
		Virtualcard_background:config.imageUrl+"Virtualcard_background.jpg",
		//空页面
		EmptyPage:config.imageUrl+"EmptyPage.png",

		lvl:config.imageUrl+"lvl.png",

		//规则选择角标
		UrlSelect:config.imageUrl+"UrlSelect.png",
		
		// tab切换
		index: 0,
		Tabs_list:[
			{name:"会员币充值",addclsid:"01",isActive:true},
			{name:"会员券充值",addclsid:"02",isActive:false}
		],
		addclsid:"01",
		// currentTab:0,
		// emyaddrullist:[],
		display_show:true,
		
	},



	/** 点击Tabs标签页 (电子币充值 || 电子券充值) */
	//接收标签页自定义组件，点击事件---子组件传递过来的参数
	handleItemChang(e){
		var that = this
		console.log(e)
		
		const index = e.detail.index;
		const addclsid = e.detail.addclsid;
		const Tabs_list = that.data.Tabs_list;
		Tabs_list.forEach((v,i)=>i===index? v.isActive=true:v.isActive=false);
		that.setData({
			Tabs_list:Tabs_list,
			index:index,
			addclsid:addclsid
		})
		//Api请求：08-001 会员币/券充值规则查询
		Request_get.get(    
			config.domainName+"api_wxmkt_server/mbremyadd/listmbremyruladd",
			{
				clsid: that.data.addclsid				// 会员币充值-01、会员券充值-02
			},
			function(res){
				console.log(res)
				if(res && res.return_no == 1){
					that.setData({
						emyaddrullist:res.return_data,
						ExchangeTabsIndex: -1  // 切换tabs后，将动态类 ExchangeTabsIndex 赋一个<>index的数值，使其初始化一下
					})
				}else{
					wx.showModal({
						title: '充值规则数据请求失败',
					})
				}
				// console.log(that.data.emyaddrullist)
			})
		},

	
	// 点击选择 充值规则框，获得标签传递的参数 index、emyaddamt、useitgvlu、rulbllno、vlddays、vlddtm、vlddtmtypid
	ExchangeNav: function (event) {
		var that = this;
		// console.log( event.currentTarget.dataset)   //测试打印
		var index =  event.currentTarget.dataset.index;
		var payamt = event.currentTarget.dataset.payamt;
		var emyaddamt = event.currentTarget.dataset.emyaddamt;
		var crtaddamt = event.currentTarget.dataset.crtaddamt;
		var rulbllno = event.currentTarget.dataset.rulbllno;
		var vlddays = event.currentTarget.dataset.vlddays;
		var vlddtm = event.currentTarget.dataset.vlddtm;
		var vlddtmtypid = event.currentTarget.dataset.vlddtmtypid
		
    that.setData({
			ExchangeTabsIndex: index,  // 将 当前点击的变量ExchangeTabsIndex 与 是否显示的变量display_show 赋值
			display_show:false,
			emyaddamt,
			crtaddamt,
			rulbllno,
			vlddays,
			vlddtm,
			payamt,
			vlddtmtypid
			
		})

		if(that.data.vlddtmtypid == "01"){  	//有效期类型 = ‘01’的 则为按有效天数到期，按当前日期后X天计算具体到期日期
			function GetDateStr(AddDayCount) { 
				var dd = new Date();
				dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期
				var y = dd.getFullYear(); 
				var m = (dd.getMonth()+1)<10?"0"+(dd.getMonth()+1):(dd.getMonth()+1);//获取当前月份的日期，不足10补0
				var d = dd.getDate()<10?"0"+dd.getDate():dd.getDate();//获取当前几号，不足10补0
				return y+"-"+m+"-"+d; 
			}
			that.setData({
				addvlddtm:GetDateStr(vlddays).substring(0,4)+GetDateStr(vlddays).substring(5,7)+GetDateStr(vlddays).substring(8,10)+"235959"
			})
			// console.log("按有效天数到期，具体到期日："+that.data.emycrt_vlddtm);
			console.log("按有效天数到期，具体到期日："+that.data.addvlddtm); //
		}else if(that.data.vlddtmtypid == "02"){
			that.setData({
				addvlddtm:vlddtm
			})
			// console.log("按具体到期日："+that.data.addvlddtm); 
		}

	},




	//未注册会员点击注册
	regNow:function(){
		wx.redirectTo({ 
		  url:"/SubpkgPublicPage/pages/PublicPage/PrivacyPolicy/PolicyMain/PolicyMain"
		});
	 },
  


	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function (option) {
		var that = this

		// 会员是否注册的标志regflg
		getApp().loginPromise.then(v => {	//app.js的Promise成功回调（全局变量赋值成功后才执行请求）
			this.setData({regflg: App.globalData.regflg})
			// console.log(App.globalData.regflg)
		})


		if(option.addclsid){
			if(option.addclsid == '01'){
				that.setData({
					index: 0,
					addclsid: '01',
					Tabs_list:
					[
						{name:"会员币充值",addclsid:"01",isActive:true},
						{name:"会员券充值",addclsid:"02",isActive:false}
					],
				})
			}else if(option.addclsid == '02'){
				that.setData({
					index: 1,
					addclsid: '02',
					Tabs_list:
					[
						{name:"会员币充值",addclsid:"01",isActive:false},
						{name:"会员券充值",addclsid:"02",isActive:true}
					],
				})
			}

			//Api请求：08-001 会员币/券充值规则查询
			getApp().loginPromise.then(v => {	//app.js的Promise成功回调（全局变量赋值成功后才执行请求）
				Request_get.get(    
					config.domainName+"api_wxmkt_server/mbremyadd/listmbremyruladd",
					{
						clsid: that.data.addclsid
					},
					function(res){
						console.log(res)
						if(res && res.return_no == 1){
							that.setData({
								emyaddrullist:res.return_data,
								ExchangeTabsIndex: -1  // 切换tabs后，将动态类 ExchangeTabsIndex 赋一个<>index的数值，使其初始化一下
							})
						}else{
							wx.showModal({
								title: '充值规则数据请求失败',
							})
						}
						// console.log(that.data.emyaddrullist)
					}
				)
			})
		}
			

	
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady: function () {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow: function () {
		var that = this

		getApp().loginPromise.then(v => {	//app.js的Promise成功回调（全局变量赋值成功后才执行请求）
			// Api请求：04-001 会员信息查询（验证已绑定）
			Request_get.get(
			config.domainName+"api_wxmkt_server/mbrreg/findwxmbr",
			{},
			function(res){    //B00-已绑定会员查询接口（不用手机号）
					// console.log(res)
				if(res != "undefined" && res.return_no == 1){
					that.setData({
						vldemyamt:res.return_data.vldemyamt,
						vldcrtamt:res.return_data.vldcrtamt,
						mbr_info:res.return_data
					})
				}
			})

		// Api请求：08-001 会员币/券充值规则查询
		Request_get.get( 
			config.domainName+"api_wxmkt_server/mbremyadd/listmbremyruladd",
			{
				clsid: that.data.addclsid
			},
			function(res){
				// console.log(res)
				if(res && res.return_no == 1){
					that.setData({
						emyaddrullist:res.return_data,
					})
					// console.log(that.data.emyaddrullist)
				}
			})
		})
	},


	
	/**
	 * 在线充值
	 */
	wxpayment:function(){
		var that = this
		that.setData({payBt_Statu:true,payBt_text:"正在支付...",})
		// 在线充值单单号：mbrid+时间戳
		let bllno = App.globalData.mbrid + Math.round(new Date() / 1000)
		//使用引用getDayFirstNowLast()函数，获取今天的日期
		const getdateArray = dateArray.getDayFirstNowLast()
		const today = getdateArray[1]
		// 使用引用getNowTime()函数，获取当前时间
		const getTime = time.getNowTime()
		that.setData({
			oprdtm:today+getTime,
			bllno:bllno
		})
		/** Api请求：81-昆明奥博克支付 ———— 支付请求-会员币/券充值 **/
		Request_post.post(
			config.domainName+"api_wxmkt_server/paysvr/pay",
			{
				bllno: that.data.bllno,
				paysvr_tmnid: config.paysvr_tmnid,	
				paysvr_chnid: "201",
				paysvr_biztypid: "mbremyadd",
				amount: that.data.payamt,
				open_id: getApp().globalData.wx_openid,
				bizparams: {
					appid: config.as_appid,		
					appuserid: getApp().globalData.wx_openid,
					mbl:  getApp().globalData.mbl,
					oprcltid: config.cltid,
					oprdtm: that.data.oprdtm,
					emyclsid: "03",
					rulbllno: that.data.rulbllno,
					vlddtm: that.data.vlddtm,
					addemyamt: that.data.emyaddamt,
					addcrtamt: that.data.crtaddamt,
					brief: "在线充值会员币/券"
				}
			},
			function(res){
				if(res != 'undefinde' &&　res.return_no == 1){
					that.setData({rsn:res.return_data.rsn})
					/** Api请求：微信_Api ———— 发起微信支付 */
					wx.requestPayment({
						timeStamp: res.return_data.payment_params.timeStamp,
						nonceStr: res.return_data.payment_params.nonceStr,
						package: res.return_data.payment_params.package,
						signType: 'MD5',
						paySign: res.return_data.payment_params.paySign,
						success:function(e){
							/** 支付完毕后的操作 */
							wx.showLoading({
								title: '获取支付结果',
							});
							// 开始轮询支付结果
							that.keyId = setInterval(() => {
								var numVlu = that.data.num + 1	//轮询的次数累加
								that.setData({num:numVlu})
								that.wxPay_Result();						//轮询时执行的方法
							},1000)	//轮询间隔时间
						},
						fail:function(i){
							console.log(i)
							if(i.errMsg == 'requestPayment:fail cancel'){
								wx.showModal({
									title: '用户取消支付',
									showCancel:false,
									success: function (res) {
										if (res.confirm) {
											that.setData({payBt_Statu:false,payBt_text:"确认支付",show: false })
											wx.redirectTo({
												url: '/SubpkgMemberbiz/pages/Member/MbrActTopUp/MbrActTopUp',
											})
										}
									}
								})
							}
						}
					})
				}else if(res == 'undefinde' || res.return_no != 1){
					wx.showModal({
						title: res.return_msg,
						showCancel:false,
						success: function (res) {
							if (res.confirm) {
								// 81-昆明奥博克支付 ———— 支付请求-支付请求非正常回调
								that.setData({
									payBt_Statu:false,
									payBt_text:"确认支付"
								})
								that.onShow()
							} 
						}
					})
				}

			}
		)
	},

	// 微信支付结果查询，支付后轮询时调用此方法
	wxPay_Result:function(){
		var that = this
		/** Api请求 昆明奥博克支付 ———— 支付结果查询 */
		Request_get.get(
			config.domainName+"api_wxmkt_server/paysvr/payresult",
			{
				biztypid: "mbremyadd",
				bllno: that.data.bllno,
				paybllno: that.data.rsn
			},
			function(res){
				if( res.return_no == 1 ){
					wx.hideLoading()
					clearInterval(that.keyId)		//终止轮询
					//终止轮询后的操作
					that.setData({payBt_Statu:false,payBt_text:"确认支付",show: false })
					that.onShow() //刷新页面数据
					that.setData({ExchangeTabsIndex: -1 })  // 完成充值后，将动态类 ExchangeTabsIndex 赋一个<>index的数值，使其初始化一下
					wx.showModal({
						title: "在线充值成功",
						showCancel: false
					})
				}else if(res.return_no != 1 && that.data.num == 60){    //每间隔1秒做一次轮询，轮询60次（60秒）后，还没有获得支付成功的结果就判定支付失败！。
					wx.hideLoading()
					clearInterval(that.keyId)		//终止轮询
					wx.showModal({
						title:"支付异常",
						content:"未获取到支付成功结果\r\n异常业务订单号：\r\n"+that.data.bllno,
						showCancel:false,
						success: function (res) {
							if (res.confirm) {
								that.setData({payBt_Statu:false,payBt_text:"确认支付",show: false })
								wx.redirectTo({
									url:App.globalData.homePage
								})
							}
						}
					})
				}
			}
		)
	},





	/*************************** Popup 弹出层 支付 ***************************/
	//Popup弹出层
	showPopup() {
		if(this.data.payamt){
			this.setData({ show: true });
		}else{
			wx.showToast({
				title: '请选择充值规则',
				icon:'none'
			})
		}
	},
	onClose() {
		this.setData({ show: false });
	},
	//确认支付
	WxChat_Pay:function(){
		var that = this
		let typeID = that.data.typeID
		if(typeID == "01"){
			//微信支付
			// this.setData({ show: false });
			that.wxpayment() 		//本页面的支付方法
		}else if(typeID == "02"){
			//银联支付
			// this.setData({ show: false });
			wx.showToast({
				title: '暂不支持银联',
				icon:"none",
				image:"../../../../image/Warning.png",
				duration: 1500
			})
		}
	},







	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide: function () {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload: function () {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: function () {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom: function () {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage: function () {

	}


})